﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using LiveTiss.Classes;

namespace LiveTiss.Schemas
{
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.ans.gov.br/padroes/tiss/schemas")]
    public partial class ct_procedimentoRealizadoEquipeProcedimentos : IDataErrorInfo
    {
        #region Public Properties - Custom

        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public DateTime? _horaInicio
        {
            get
            {
                if (horaInicioField > Util.EmptyDate)
                    return this.horaInicioField;
                else
                    return null;
            }
            set
            {
                if (value.HasValue)
                {
                    if ((object.ReferenceEquals(this.horaInicioField, value.Value) != true))
                    {
                        this.horaInicioField = value.Value;
                        this.OnPropertyChanged("horaInicio");
                    }
                }
                else
                {
                    if ((object.ReferenceEquals(this.horaInicioField, Util.EmptyDate) != true))
                    {
                        this.horaInicioField = Util.EmptyDate;
                        this.OnPropertyChanged("horaInicio");
                    }
                }

            }
        }

        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public DateTime? _horaFim
        {
            get
            {
                if (horaFimField > Util.EmptyDate)
                    return this.horaFimField;
                else
                    return null;
            }
            set
            {
                if (value.HasValue)
                {
                    if ((object.ReferenceEquals(this.horaFimField, value.Value) != true))
                    {
                        this.horaFimField = value.Value;
                        this.OnPropertyChanged("horaFim");
                    }
                }
                else
                {
                    if ((object.ReferenceEquals(this.horaFimField, Util.EmptyDate) != true))
                    {
                        this.horaFimField = Util.EmptyDate;
                        this.OnPropertyChanged("horaFim");
                    }
                }
            }
        }

        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public DateTime? _data
        {
            get
            {
                if (dataField > Util.EmptyDate)
                    return this.dataField;
                else
                    return null;
            }
            set
            {
                if (value.HasValue)
                {
                    if ((object.ReferenceEquals(this.dataField, value.Value) != true))
                    {
                        this.dataField = value.Value;
                        this.OnPropertyChanged("data");
                    }
                }
                else
                {
                    if ((object.ReferenceEquals(this.dataField, Util.EmptyDate) != true))
                    {
                        this.dataField = Util.EmptyDate;
                        this.OnPropertyChanged("data");
                    }
                }
            }
        }

        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public List<KeyValuePair<string, string>> tecnicaUtilizadaItems
        {
            get
            {
                return XML_enum.TecnicaUtilizada;
            }
        }

        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public List<KeyValuePair<string, string>> viaDeAcessoItems
        {
            get
            {
                return XML_enum.ViaDeAcesso;
            }
        }

        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public ct_procedimentoRealizadoEquipeProcedimentos Current
        {
            get
            {
                return this;
            }
            set
            {
                this.data = value.data;
                this.equipe = value.equipe;
                this.horaFim = value.horaFim;
                this.horaFimSpecified = value.horaFimSpecified;
                this.horaInicio = value.horaInicio;
                this.horaInicioSpecified = value.horaInicioSpecified;
                this.procedimento = value.procedimento;
                this.quantidadeRealizada = value.quantidadeRealizada;
                this.reducaoAcrescimo = value.reducaoAcrescimo;
                this.reducaoAcrescimoSpecified = value.reducaoAcrescimoSpecified;
                this.tecnicaUtilizada = value.tecnicaUtilizada;
                this.tecnicaUtilizadaSpecified = value.tecnicaUtilizadaSpecified;
                this.valor = value.valor;
                this.valorSpecified = value.valorSpecified;
                this.valorTotal = value.valorTotal;
                this.valorTotalSpecified = value.valorTotalFieldSpecified;
                this.viaAcesso = value.viaAcesso;
                this.viaAcessoSpecified = value.viaAcessoSpecified;
            }
        }

        #endregion

        #region IDataErrorInfo

        private string _error = null;
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public string Error { get { return _error; } }

        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public string this[string propertyName]
        {
            get
            {
                _error = null;
                switch (propertyName)
                {
                    case "data":
                        if (dataField == null || dataField == Util.EmptyDate)
                        {
                            _error = "Campo Obrigatório";
                        }
                        break;
                    case "valor":
                        if (valorField == 0 || valorField < 0)
                        {
                            _error = "Campo Obrigatório";
                        }
                        break;
                }

                return _error;
            }
        }

        #endregion
    }
}
